package com.mwqi.http.protocol;

import com.mwqi.bean.AppInfo;
import com.mwqi.utils.LogUtils;
import org.json.JSONArray;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.List;

public class HomeProtocol extends BaseProtocol<List<AppInfo>> {
	private List<String> mPictureUrl;

	@Override
	protected String getKey() {
		return "home";
	}

	public List<String> getPictureUrl() {
		return mPictureUrl;
	}
	/**
	 * 使用getJSONObject时,如果返回的对象不是JSONObject,抛出JSONException异常
	 * 使用optJSONObject时,当返回结果不是JSONObject时,这里不会抛异常,而是返回null
	 * JsonArray的对象中有方括号，有add和element两种set方法，有opt和get两种get方法。
	 * JsonObject是以keyvalue的形式存在的，有put和element两种set方法，有opt和get两种get方法。
	 */
	@Override
	protected List<AppInfo> parseFromJson(String json) {//为什么不用gson等
		try {
			JSONObject jsonObject = new JSONObject(json);//先转成JSONObject
			mPictureUrl = new ArrayList<String>();
			JSONArray array = jsonObject.optJSONArray("picture");//拿到里面的数组对象
			if(array != null){
				for (int i = 0; i < array.length(); i++) {
					mPictureUrl.add(array.getString(i));
				}
			}
			List<AppInfo> list = new ArrayList<AppInfo>();
			array = jsonObject.getJSONArray("list");
			for (int i = 0; i < array.length(); i++) {
				JSONObject obj = array.getJSONObject(i);
				AppInfo info = new AppInfo();//javabean  这些字段在别的地方可以要修改
				info.setId(obj.getLong("id"));
				info.setName(obj.getString("name"));
				info.setPackageName(obj.getString("packageName"));
				info.setIconUrl(obj.getString("iconUrl"));
				info.setStars(Float.valueOf(obj.getString("stars")));
				info.setSize(obj.getLong("size"));
				info.setDownloadUrl(obj.getString("downloadUrl"));
				info.setDes(obj.getString("des"));
				list.add(info);
			}
			return list;
		} catch (Exception e) {
			LogUtils.e(e);
			return null;
		}
	}

}
